package cn.qyd.javamap;

import org.checkerframework.checker.units.qual.A;
import org.omg.PortableInterceptor.INACTIVE;

import java.util.ArrayDeque;
import java.util.LinkedList;

/**
 * @author 邱运铎
 * @date 2024-03-16 15:53
 */
public class ArrayDequeDemo {
    public static void main(String[] args) {
        ArrayDeque<String> stack = new ArrayDeque<>();
        stack.push("qiuyunduo");
        stack.push("qyd");
        stack.push("java");
        System.out.println(stack);
        stack.pop();
        System.out.println(stack);

        ArrayDeque<Integer> queue = new ArrayDeque<>();
        queue.offer(1);
        queue.offer(2);
        queue.offer(3);
        System.out.println(queue);
        Integer peek = queue.peek();
        System.out.println("队列队首元素为： " + peek);
        queue.poll();
        System.out.println(queue);

        LinkedList<Integer> queue1 = new LinkedList();
        queue1.offer(1);
        queue1.offer(2);
        queue1.offer(3);
        System.out.println(queue1);
        peek = queue1.peek();
        System.out.println("队列队首元素为： " + peek);
        queue1.poll();
        System.out.println(queue1);
        //ArrayDeque中当其中数组指针tail和head分别为数组长度-1和0的时候，在进行addlast或addfirst时候通过
        //数组长度-1和当前tail和head也就是数组长度和-1进行逻辑与操作实现不会出现数组越界的情况
        //具体可以看addlast和addfirst方法
        System.out.println(-1 & 15);
        System.out.println(16 & 15);
        queue.addLast(8);
    }
}
